Beiträge von t.schlumpf

    Ein Hallo in die Runde


    Ich suche eine Erklärung für ein etwas seltsames Verhalten beim Wechsel von ProDOS nach CP/M auf dem Apple ][+:


    - Power-On

    - ProDOS läuft nach PR#6 von Diskette oder PR#5 vom Apple2-RPI

    - CP/M Diskette in S6,D1

    - PR#6, CP/M bootet wie es sollte

    - Aus CP/M BOOT (auf Utility Diskette)

    - ProDos Diskette in S6,D1

    - Erst jetzt CR in CP/M

    - ProDOS startet wie gewünscht von Diskette

    - CP/M Diskette in S6,D1

    - In ProDOS #PR6

    - Z80 SOFTCARD NOT FOUND und Monitor Prompt (*)

    - 6^P im Monitor oder PR#6 nach ^C: CP/M startet normal


    Der Wechsel von ProDOS nach CP/M funktioniert nach Power-Up genau einmal, dann Z80 SOFTCARD NOT FOUND. Ein nachfolgendes PR#6 startet CP/M wie erwartet.

    Das ganze ist ja nicht so schlimm, trotzdem würde mich interessieren, wo das Problem liegt. Uebrigens: mit DOS 3.3 tritt das Problem nicht auf.


    Hat jemand das gleiche Verhalten schon gesehen und ev. eine Lösung gefunden?


    Die Konfiguration meines Apfels könnte relevant sein:



    Von oben nach unten:

    - Disk Controller

    - Apple2-IO-RPI (das Verhalten ist mit oder ohne diese Karte identisch)

    - Z80 Softcard

    - 80 Zeichen Karte (Videx kompatibel)

    - SuperSerialCard

    - Printer Adapter

    - 16k RAM Erweiterung


    Das Mainboard ist Revision 1


    lg
    Tony

    Der Patch ist geglückt.



    Zudem heisst der 63O1 Prozessor jetzt 6301 und die Copyright Medung bei jedem Start von Basic ist entfernt (sorry J.M.Wald). Das Image des geänderten ROMs ist im Anhang mit einer kurzen Beschreibung.



    Ich habe einen kleinen Basic-Loader geschrieben, der für die Assembler-Programme verwendet werden kann. Er setzt MEMSET automatisch auf die Adresse nach dem Assemblerprogramm und erlaubt wahlweises Ausführen.



    Der Source des Ladeprogramms und der Uhr sind im Anhang. Der Code ist weder laufzeit- noch grössenoptimiert. Es geht mir hauptsächlich um die Lesbarkeit.


    Das ganze funktioniert natürlich nur mit der neu erworbenen



    Extension Unit.


    Gruss an alle

    Tony

    Salü Martin


    Vielen Dank für Deine Bemühungen!

    Hat geklappt, funktioniert.


    Als nächstes werde ich versuchen, das Assembler-ROM so zu patchen, dass im Assemblerlisting auch Datum und Zeit ausgegeben werden. Nicht wirklich notwendig, aber macht Spass...


    Hast Du die ROMs selbst disassemblert oder gibts die Listings irgendwo zum Download?


    Nochmals Danke!

    Tony

    Es ist Zeit für ein Update:

    Ich konnte inzwischen eine Extension Unit in eBay ergattern. Nun laufen Assembler und Debugger, feine Sache.


    Aber wie könnte es anders sein, nicht ganz. Ich habe das CLOCK Programm aus der Anleitung des Assemblers abgetippt. Da kommen zwar die Doppelpunkte und der Sekundenticker, die Zahlen jedoch sind leer oder unsinnig. Es wird eine Funktion RDCLK ($E1FA) aufgerufen, die nirgends dokumentiert ist. Mit direktem Lesen der RTC Register funktionierts. Ein weiterer Hinweis auf die Fehlfunktion ist die Titelzeile des Assemblerlistings, wo Datum und Zeit mit lauter '20' ausgegeben werden.

    In der Anleitung ist der Debugger leider nicht dokumentiert. Auch hier treten merkwürdige Abnormitäten auf. Das Kommando 'M' z.B. ruft den Monitor auf, dieser meldet sich aber immer mit 'Trap!' Einmal im Monitor, kann dieser werder mit BREAK oder MENU, nur mit G DFFD (Einsprung ins Haupmenu) verlassen werden. Beim Ausschalten wird dauernd zwischen Hauptmenu und Debugger hin und hergeschaltet, nur RESET hilft.


    Wie es scheint, will der Assembler/Debugger eine bestimmte ROM-Basic/Monitor Version (ich habe Basic V1.10).

    Hat jemand Erfahrungen mit diesem Assembler und/oder Debugger? (Ich denke da speziell an Martin, @Martin Hepperle)


    Danke Euch!

    Tony

    Salü Martin, danke für Deine Antwort.

    LOADM und SAVEM habe ich probiert, funktioniert auch, aber nur mit Kassette, nicht mit RS232.


    Ich verwende den ASL Assembler, er untertützt viele andere Prozessoren, so brauche ich nur einen Assembler für verschiedene Systeme. Die Binärfiles lade ich mit Binary Load in den HX-20, eine Sache von Sekunden, daher macht in diesem Fall eine Progress-Ausgabe keinen Sinn (in den Screendumps fehlt der 'Receiving...' Schirm).


    Das ROM von J.Wald habe ich, aber keine Extension Unit. Das ROM läuft ja (leider) nur damit.


    lg Tony

    Salü Martin

    Vielen Dank für Deine Tips. Da ist ein echter HX-20 Guru am Werk... Du hast schon recht, MEMSET muss den Basic Code, falls vorhanden, verschieben, um Platz freizugeben.

    Es geht mir aber in erster Linie darum, stand-alone Assemblerprogramme zu schreiben, um den 6301 kennenzulernen (bin Z80-vergiftet). Ich habe mir so geholfen, dass das Ladeprogramm die Endadresse ausgibt, diese trage ich dann manuell mit MEMSET ein. Das Ladeprogramm ist im Option-ROM ab 6000, ein Basic Lader ist daher nicht notwendig. Die Sourcen sind im Anhang.


    Ein paar Screendumps:



    Das Binary Exec Programm erwartet in den ersten zwei Bytes die ID 55AA, falls nicht vorhanden weil nichts geladen oder von Basic überschrieben, erfolgt kein Sprung, um Abstürze zu vermeiden.

    Hallo in die Runde!

    Da mich Assembler mehr fasziniert als Basic, habe ich mich in den 6301 des HX-20 eingelesen. Ich verwende den ASL Assembler unter Win-XP, funktioniert tadellos. Mit dem Binär-Loader können die Daten auch problemlos zum HX-20 übertragen werden.

    Ich habe den Loader so angepasst, dass er im Option-EPROM ( 6000) läuft, im System-Menu erscheint, kein RAM benötigt und immer verfügbar ist. Läuft auch problemlos. Der provisorische ROM Code ist angehängt.


    Nun zu meiner Frage. Ist es möglich, dem Basic von 'auswärts' mitzuteilen, wo seine MEMSET Adresse liegt? Diese Adresse ist ja nach dem Download im Assemblerprogramm bekannt. Am einfachsten wäre es, die MEMSET Routine im Basic ROM aufzurufen, nur dazu müssten Adresse und Parameter bekannt sein. Ich habe versucht, die Endadresse des geladenen Assemblerprogramms in 009C einzutragen, leider ohne Erfolg, FRE(0) gibt immer das gleiche Resultat. MEMSET aus Basic verändert (009C,9D), daher vermute ich, dass dies die MEMSET Addresse ist.


    Kennt jemand die MEMSET Adresse oder eine andere Möglichkeit?

    Danke schon mal...

    Tony

    Ein Hallo in die Runde!


    Im Web habe ich ein ROM-Image für den HX-20 gefunden, ASM-DEBUG. Wäre schön...


    Das Image ist 16k gross, beim Anschauen stellt sich aber heraus, dass es zwei 8k Images sind. Die Header passen, sie ersetzen die BASIC ROMS. Auch die Startadressen zeigen ins entsprechende ROM. Habe dann zwei 2764 gebrannt, anstelle der Basic ROMs eingesetzt. Im Menu erscheinen die ROMs nach Initialisierung korrekt als BASIC/ASSEMBLER und DeBug. Beim Starten jedoch TRAP!


    Im Assembler-ROM steht die Versions-Info '6301 Assembler V2.3r (C) J.M.Wald 1987'.


    Im Anhang ist das Original-Image sowie die 2764 Images,


    Kennt jemand dieses ROM? Gibts dafür eine Anleitung?


    Gruss aus der Schweiz

    Tony

    Franky, danke für Deine Antwort.

    Da ist meiner scheinbar eine Ausnahme. Ich habe alle Elkos und deren Lötstellen mit der Lupe untersucht, keine Spur von Verfärbung oder sonstigen Schäden, sehen alle original aus, die Elkos wurden demzufolge noch nie gewechselt. Zudem läuft das Ding, auch die Kassette, inzwischen einwandfrei.


    Martin Hepperle, auch Dir danke!

    Das hatte ich auch so interpretiert. Irgendwie unbegreiflich, warum RTS nicht in Abhängigkeit des Empfangsbuffers bedient wird. Aber ja, so ist es nun mal, weiterhin Zeichenverzögerung beim LOAD...

    Hallo Franky

    Nein habe ich nicht. Ich ersetze Elkos nur dann, wenn notwendig (sichtbare Schäden oder Kapazitätsverlust/Kurzschluss). In vielen Fällen lässt sich das defekte Bauteil messtechnisch feststellen. An all den Fehlfunktionen waren keine Kondensatoren beteiligt.

    Lg Tony

    Hier die Fortsetzung des HX-20 Revival...


    Das Gerät funktioniert seit einigen Tagen ohne Probleme. Doch plötzlich lässt er sich nicht mehr einschalten, keine Reaktion. Also nochmals aufschrauben und Spannungen messen. Die Batterie liegt bei 4.2V und steigt auch mit Ladegerät nicht weiter an. Da scheint eine der Zellen Kurzschluss zu haben. Bis die neue Batterie (in eBay gefunden) ankommt, muss der PX-8 die seine ausleihen. Der HX ist wider fit...


    ..,. aber nur kurze Zeit. Mitten im Eingeben eines Programms keine Reaktion mehr auf Tastendrücke. Auch lässt sich der Rechner nicht mehr ausschalten. Lässt auf eine blockierte Taste schliessen, auch gemäss der Epson-Dokumentation. Hier ist jedoch nichts zu finden, alle Tasten funktionieren wie gewünscht. Erstaunlicherweise kommt es jedoch vor, dass nach Einschalten oder RESET ein paar Tasten erkannt werden aber dann ist wieder Schluss.

    Ein Blick in die Theory of Operation der Tastatur zeigt, dass bei jedem Tastendruck ein Interrupt des Hauptprozessors ausgelöst wird, der daraufhin die Tastaur scant. Liegt kein Interrupt an und läuft kein Programm, schläft der Hauptprozessor um Strom zu sparen. Dies ist auch deutlich sichtbar beim Anschauen der Address- und Datensignale.



    Und tatsächlich, beim Drücken einer Taste passiert am IRQ Eingang nichts. /K.B.REQUEST hingegen wird bei gedrückter Taste low. Viel kanns jetzt nicht mehr sein. Beim Messen der Signale bis zum IRQ stellt sich heraus, dass an 3E/12 und 2E/1 eine verbotene Spannung von ca 3V, allerdings schwankend, liegt. Also ist entweder 3E oder 2E defekt. Um festzustellen, welcher der Uebeltäter ist, Pin 3E/13 abgeklemmt und wieder gemessen, sauberes Signal, also 2E ersetzen.



    So, jetzt sollte es funktionieren. Tut's aber nicht! Immer noch die gleiche schräge Spannung. Da diese Leitung nirgends anders hinführt, Platinendefekt? Zwischen +5V und der Problemleitung messe ich etwa 3kOhm, doch etwas wenig, dürfte das Verhalten erklären.



    Hier liegt das Problem: Zwischen der Leiterbahn von Pin13 und der Lötstelle des Pin14 besteht eine, allerdings nicht sichtbare, Verbindung. Ein Strich mit dem Messer und das Ohmmeter zeigt unendlich. Und, oh Wunder, das Baby schreit wieder!!


    Ein kleiner Schönheitsfehler besteht aber weiterhin



    Das LCD blendet bestimmte Punkte aus, wenn bestimmte andere aktiv werden. Die Zeit sollte 9:53 heissen. Dies ist nicht so schlimm, wenn aber jemand ein überzähliges LCD hat, wäre ich gerne Abnehmer...


    Zum Schluss noch eine Frage betreffend RS-232 Kommunikation bzw Handshake. Gemäss Dokumentation und auch Hinweisen im Web sollte es möglich sein, Handshake auch für das Empfangen zu verwenden, so dass LOAD "COM0:(68N27)" mit 4800 bits/s ohne Zeichen- oder Zeilenverzögerung funktioniert. Bei mir bewegt sich RTS, der einzige vom Prozessor steuerbare Ausgang (DTR hängt fix an +8V), auch bei Vollaufen des Empfangsbuffers nicht, BO Error. Sende-Handshake mit CTS ist problemlos.



    Hat jemand eine Lösung?

    Vor kurzer Zeit habe ich einen HX-20 im Marktplatz erstanden. Er wurde, mit Ausnahme von Drucker und Mikrokassetten-Laufwerk, als funktionsfähig angeboten.


    Also, einschalten: Keine Reaktion.


    Netzgerät anschliessen, Rechner startet, nach Initialisierung funktioniert auch Basic, das Gerät entspricht also dem Angebot im Marktplatz.

    Bei Verwendung von Drucker oder Kassette erscheint allerdings immer 'Charge Battery', das Gerät schaltet aus, auch nach längerer Ladezeit.


    Nach Oeffnen des Gerätes zeigt sich, dass die Batterie nicht angeschlossen ist (was begrüssenswert ist). Aber auch nach Anschliessen der Batterie immer noch das gleiche Resultat.



    Dies war einmal ein Kontakt im Stecker der Batterie. Hier geht nichts mehr durch...



    Auch der Anschluss-Stecker auf dem Mainboard hat was von der Säure mitbekommen. Nachlöten unmöglich, auch nach Reinigen der Oberflächen.



    Da hilft nur die Radikal-Methode. Leider ist kein Originalstecker in der Wühlkiste auffindbar. Der Akku lässt sich jetzt erstaunlicherweise sogar laden, der Drucker funktioniert einwandfrei.


    Der nächste Test gilt dem Kassettengerät. Im Direktmodus lässt sich das Band Vor- und Rückspulen, auch das WIND Kommando in BASIC funktioniert. Beim Versuch, ein Programm zu SAVEn, tut sich ausser I/O Error gar nichts. Das Band bewegt sich kurz und steht dann still. Die Andruckrolle wird nicht bewegt, dies dürfte der Grund sein.



    Dafür verantwortlich war der Motor, der Andruckrolle und Tonkopf in Position bringen sollte. Nach manuellem Drehen der Motorachse und einem Tropfen Oel bewegt sich der Motor wieder. SAVE funktioniert nun einwandfrei. LOAD hingegen nur hin und wieder, meistens ist ein I/O Error das Resultat. Bei genauerem Hinsehen ist erkennbar, dass sich das Band unregelmässig bewegt.



    Ist auch kein Wunder mit diesem deformierten und viel zu losen Antriebsriemen.



    Dank den Angaben von Martin Hepperle in seinem HX-20 Tips and Tricks war es einfach, einen Ersatzriemen zu beschaffen. Nach Wechseln des Riemens läuft nun auch das Kassettengerät wie eine eins.


    Das ist aber noch nicht alles. Mehr im nächsten Post...

    Hallo Michael

    Die Konfiguration meines NAS hat sich geändert. Dadurch ist die URL meiner Seite neu

    http://xjd0zipgwho4za58.myfritz.net:10383/Index.html

    das Museum entfällt, dafür hat sich der Port von 10381 auf 10383 geändert.


    Ist es Dir möglich, die Links auf Deiner Seite entsprechend anzupassen? Im Moment laufen noch beide Ports, ich möchte aber den 10381 baldmöglichst schliessen.

    Vielen Dank für Deine Bemühungen!

    Hallo...

    Täusche ich mich oder habe dieselbe Anfrage eben im Vintage Computer Federation Forum beantwortet?

    Doppelt genäht hält besser!

    Im Anhang ist das EPROM Image und zusätzlich der disassemblierte Source des Tiny-Basic. Ich wollte das Basic ins RAM des Epromers verschieben, nach 8000, hat auch geklappt Der Source ist nicht dokumentiert, aber zum Assemblieren und Linken reichts.


    N.B. Du hast den Titel des Themas geändert. Möchte ich auch gern. Wie geht das?

    Christiani-Drucker am MPF-1


    Seit einiger Zeit liegt ein Christiani-Drucker



    nutzlos herum. An meinem MPF-1 habe ich keinen Drucker, aber einen EPROM Programmer. Dieser kann aber nicht nur EPROMs programmieren, er hat auch RAM und I/O. Warum nicht die I/Os zum Anschluss des Christiani-Druckers nutzen?



    Fehlt noch die Software. Als Vorlage dient das ROM des PRT-MPF. Ich habe dieses disassembliert und für den Christiani angepasst. Das Resultat sieht so aus:



    Disassebler,



    HEX dump



    und Basic


    Alles schön und gut. Nur, wo ist dieses Programm gespeichert? Eine Möglichkeit, das ROM U7 des MPF. Hier steckt aber ein RAM. Bleibt nur das RAM des EPROM Programmers. Das Laden des fast 4k langen Programms dauert aber etwas lange, darum das EPROM-to-RAM (RE.ZIP) Progrämmchen. Dieses erlaubt das Kopieren eines EPROMs ins RAM. Es befindet sich im unbenutzten Bereich des Programmer-EPROMs. 97C0 kopiert ein 2716 nach 2000, U7 des MPF-1 (z.B. Basic), 97C6 kopiert ein 2716 nach 8000 und 97CA ein 2732 nach 8000. Das Druckerprogramm wird, nach Laden mit 97CA GO mit dem entsprechend programmierten EPROM im ZIF Sockel, über 8000 (Disassember), 8005 (Hex Dump) oder 800A (Basic List) gestartet. Der etwas spärlich dokumentierte Sourcecode des Printerprogramms ist hier: PE.ZIP.

    Danke Euch für die Blumen...


    @ThoralfAsmussen: Das mit dem KIM ist korrigiert, es dürfte aber noch mehr solche Fehler haben. Zuerst hiess es überall 'Dokumentation', musste aber beim Einführen des 320er Breakpoints gekürzt werden.

    Das mit dem Schliessen der Bilder (guter Vorschlag, danke) werde ich mal versuchen. Und die Rückseiten der Prints. ja wäre sicher schön. Für neue oder wenn Aenderungen anstehen, werde ich das berücksichtigen.

    Es ist Zeit für ein erneutes Update...


    Da war ein grober Fehler in der Definitionsdatei, die Portadressen der PIO waren falsch.


    Ausserdem eine Erweiterung:

    Ein Progrämmchen, das Kopieren eines EPROM ins RAM des MPF ermöglicht, ohne Umweg über die EPB Firmware. Es hat Platz im unbenutzten Bereich am Ende des EPB EPROMs. Ueber verschiedene Einsprungadressen sind folgende Optionen wählbar:


    97C0: Kopiert ein 2716 nach 2000, ins RAM an U7 des MPF. So ist z.B. das Tiny-Basic mit ein paar wenigen Tastendrücken verfügbar.

    97C6: Kopiert ein 2716 nach 8000, ins RAM des EPB.

    97CA: Kopiert ein 2732 nach 8000


    Auf diese Weise können Programme, die zuvor an die gewünschte Adresse gelinkt, auf ein EPROM gebrannt wurden, in nullkommanichts ins RAM geladen und ausgeführt werden.